package medium;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 2981. 找出出现至少三次的最长特殊子字符串 I
 * 创建时间： 2024-05-29 22:14
 **/
public class 找出出现至少三次的最长特殊子字符串I_2981 {
    static class Solution {
        public int maximumLength(String s) {
            List<Integer>[] groups = new ArrayList[26];
            Arrays.setAll(groups, i -> new ArrayList<>());
            int cnt = 0;
            for (int i = 0; i < s.toCharArray().length; i++) {
                cnt++;
                if (i + 1 == s.length() || s.charAt(i) != s.charAt(i + 1)) {
                    groups[s.charAt(i) - 'a'].add(cnt);
                    cnt = 0;
                }
            }

            int ans = 0;
            for (List<Integer> g : groups) {
                if (g.isEmpty()) {
                    continue;
                }
                g.sort(Collections.reverseOrder());
                g.add(0);
                g.add(0);
                ans = Math.max(ans, Math.max(g.get(0) - 2, Math.max(Math.min(g.get(0) - 1, g.get(1)), g.get(2))));
            }
            return ans > 0 ? ans : -1;
        }
    }

}
